package cn.wolfcode.util;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 为什么要使用自定义注解？
 * 因为我们手动添加权限非常的麻烦
 *
 * 1.所以我们想要通过程序自动帮我们插入权限，插入权限的话需要权限的名称和表达式
 * 2.我们知道一个RequestMapping就代表了一个权限，而该注解又在controller里面
 * 所以我们想着能不能通过controller对象通过反射来获取方法，通过方法获取requestMapping注解的路径
 * 3.那么我们的权限名称呢？
 * 因此我们可以想到使用自定义注解（包含权限名称，表达式）
 * 通过controller的反射拿到Method后拿到注解，通过注解拿到对应的属性。
 */

//注解贴在哪个上面，方法，属性？
@Target({ElementType.METHOD, ElementType.TYPE})
//注解的什么时候运行，执行周期
@Retention(RetentionPolicy.RUNTIME)
public @interface RequirePermission {
    String name(); //权限名称
    String experssion(); //权限表达式
}
